#ifndef __LEDS
#define __LEDS

#include "config.h"

typedef enum
{
        /* 无充电模式选择 */
        LEDS_MODE_NONE_MODE,
        /* 快速充电模式 */
        LEDS_MODE_FAST_MODE,
        /* 慢速充电模式 */
        LEDS_MODE_SLOW_MODE,
        /* 智能充电模式 */
        LEDS_MODE_AUTO_MODE,
        /* 手动充电模式 */
        LEDS_MODE_HAND_MODE,

        /* 停止充电 */
        LEDS_MODE_STOP_CHARGE,
        /* 系统故障 */
        LEDS_MODE_SYS_ERROR,
        /* 快速充电过程 */
        LEDS_MODE_FAST_CHARGE,
        /* 慢速充电过程 */
        LEDS_MODE_SLOW_CHARGE,
        /* 正在等待预约到时 */
        LEDS_MODE_WAIT_ORDER,
        /* 取消预约到时灯 */
        LEDS_MODE_WAIT_FINISH,

        /* 关闭所有 LED 灯 */
        LEDS_MODE_DISABLE,
} LedsMode;

typedef struct _Leds Leds;
#define LEDS(any) ((Leds *)(any))

extern Leds *leds_new_from_global(void);

/**
 * @brief 调试功能：将字节打印在 8 个灯上
 */
extern void leds_set_byte(Leds *self, uint8_t byte);

/**
 * @brief 设置 LED 闪亮模式
 */
extern void leds_set_mode(Leds *self, LedsMode mode);

#endif
